<?php

namespace app\controllers;

use Yii;
use yii\base\DynamicModel;
use yii\validators\EmailValidator;
use yii\web\Controller;
use app\models\AdminUser;

class LoginInController extends Controller
{
    /**
     * @return string 如果验证通过则渲染entry-confirm视图，否则渲染entry视图
     */
    function actionIndex(){
        $model = new AdminUser();
        // populate model attributes with user inputs
        //$model->load(\Yii::$app->request->post());
        // which is equivalent to the following:
        // $model->attributes = \Yii::$app->request->post('AdminUser');
//        $model->attributes=['username'=>'admin'];
//        dd($model->attributes);
        /**
          array(3) {
        ["id"]=>
        NULL
        ["username"]=>
        string(5) "admin"
        ["password"]=>
        NULL
        }
         */
        //dd(\Yii::$app->request->post('AdminUser'));
        /**
         array(2) {
        ["username"]=>
        string(5) "admin"
        ["password"]=>
        string(4) "1234"
        }
         */
        //解释$model->load(Yii::$app->request->post()，的意思，就是将用户输入的数据，传递到模型中，并赋值

        //可以通过$model->username来访问model中的属性
        //dd(Yii::$app->request->isAjax);

        if ($model->load(Yii::$app->request->post()) && $model->login()) {
//            Yii::$app->user->logout();
//            return $this->goHome();
            return $this->render('entry-confirm', ['model' => $model]);
        } else {
            //如果$model->validate()验证没有通过，则可以通过 yii\base\Model::errors 属性获取相应的报错信息
//            $errors = $model->errors;
//            dd($errors);
//            dd(Yii::$app->getHomeUrl());  //output :/Yii/yiitest/basic/web/
            return $this->render('entry', ['model' => $model]);
        }
    }

    function actionValidate()
    {
        /**
         *临时验证
         * 对没有绑定任何模型的值进行临时验证
         * 可以调用所需验证器的 yii\validators\Validator::validate() 方法
         * 注意：
         * 不是所有的验证器都支持这种形式的验证。比如 unique（唯一性）核心验证器就就是一个例子， 它的设计初衷就是只作用于模型类内部的。
         */
//        $email = 'test@example.com';
//        $email = 'test';
//        $validator = new EmailValidator();
//        if ($validator->validate($email, $error)) {
//            echo '有效的 Email 地址。';
//        } else {
//            echo $error;
//        }

        /**
         * 如果针对一系列的值执行多项验证，可以使用 yii\base\DynamicModel 。它支持即时添加特性和验证规则的定义。它的使用规则是这样的：
         * use yii\base\DynamicModel;
         */
//        $name="234";
//        $email="123@qq.com";
//        $model = DynamicModel::validateData(compact('name', 'email'), [
//            [['name','email'],'required'],
//            [['name', 'email'], 'string', 'max' => 128],
//            ['email', 'email','message'=>'邮箱格式不正确'],
//        ]);

//        if ($model->hasErrors()) {
            // 验证失败
//            dd($model->errors);
//        } else {
            // 验证成功
//            dd($model->name);
//            echo "验证成功";
//        }

        /*也可以写成如下这种
         public function actionSearch($name, $email)
        {
            $model = new DynamicModel(compact('name', 'email'));
            $model->addRule(['name', 'email'], 'string', ['max' => 128])
                ->addRule('email', 'email')
                ->validate();

            if ($model->hasErrors()) {
                // 验证失败
            } else {
                // 验证成功
            }
        }
         */


    }




}